package com.boot.framework.token.utils;

import cn.dev33.satoken.stp.StpUtil;
import com.boot.framework.token.constans.AppConstant;
import com.boot.framework.token.domain.LoginUser;

import java.util.Set;

/**
 * @author yangfan
 * @date 2023/12/24
 * @Description
 */
public class AuthUtils {
    /**
     * 获取登录用户的Id
     *
     * @return id
     */
    public static String getId() {
        return getLoginUser().getId();
    }

    /**
     * 获取登录用户的账号
     * @return username
     */
    public static String getUsername() {
        return getLoginUser().getUsername();
    }

    /**
     * 获取当前用户
     * @return user
     */
    public static LoginUser getLoginUser() {
        return (LoginUser) StpUtil.getSession().get(AppConstant.APP_LOGIN_USER);
    }

    /**
     * 判断用户是否是管理员
     * @return true|false
     */
    public static boolean isAdmin() {
        Set<String> roles = getLoginUser().getRoles();
        return roles.contains(AppConstant.APP_ADMIN);
    }

    /**
     * 获取当前用户的角色标识
     * @return roles
     */
    public static Set<String> getRoles() {
        return getLoginUser().getRoles();
    }

    /**
     * 判断用户是否拥有某个角色
     * @param role 角色
     * @return true|false
     */
    public static boolean hasRole(String role) {
        Set<String> roles = getLoginUser().getRoles();
        return roles.contains(role);
    }
}
